window: Be more careful when propagating key events
authorMatthias Clasen <mclasen@redhat.com>
Sat, 5 Apr 2014 15:43:43 +0000 (11:43 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 12 Apr 2014 05:00:01 +0000 (22:00 -0700)
We are keeping references on the widget we are handling as we
are iterating up, but that doesn't protect us against the entire
tree being axed from inside gtk_widget_handle_event.
https://bugzilla.gnome.org/show_bug.cgi?id=727644

gtk/gtkwindow.c

index d7911869bfa738a6af1c7553ee2b5cbe637cdeb8..b6f6997f34b72206fb58d09ce1cc4bc0b68485b2 100644 (file)
@@ -7613,7 +7613,11 @@ gtk_window_propagate_key_event (GtkWindow        *window,
       GtkWidget *parent;
       
       if (gtk_widget_is_sensitive (focus))
-        handled = gtk_widget_event (focus, (GdkEvent*) event);
+        {
+          handled = gtk_widget_event (focus, (GdkEvent*) event);
+          if (handled)
+            break;
+        }
 
       parent = gtk_widget_get_parent (focus);
       if (parent)